﻿using System;
using System.Collections.Generic;
using Sustainalytics.Entities.ESGRatings;
using Sustainalytics.ESGRatings.BusinessLogic.Models;
using Sustainalytics.Synchronization.Interface;

namespace Sustainalytics.EsgRatings.BusinessLogic
{
    public interface IWeightMatricesManagement
    {

   

        List<WeightMatrix> GetActiveWeightMatrices();

        List<EsgInputFileComplete> ListEsgInputFilesByAccountId(Guid? accountId);

        List<WeightMatrix> ListWeightMatricesByAccountId(Guid? accountId, bool includeDetails = true);

        int CountWeightMatricesByAccountId(Guid? accountId);

        int GetMatricesSlotsPerPlatform();

        WeightMatrix GetWeightMatrix(Guid matrixId);

        WeightMatrix UpdateCustomWeightMatrix(WeightMatrix wm);

        void DeleteCustomWeightMatrix(Guid matrixId);

        List<string> DeleteCustomWeightMatrices();
    }

    public interface IWeightMatricesProcessor
    {
        WeightMatrixReport GetWeightMatrixReport(Guid weightMatrixId);

        FileUploadLogs LoadWeightMatrixForProcessing(string matrixFileName, WeightMatrixUploadInfo uploadDto, byte[] matrixFileContent, string matrixFileContentType);

        List<string> ProcessLoadedWeightMatrices(SyncContext syncContext = null);

        List<string> EnsureWeightsConsistencyOnCompanies();
    }
}
